"""  
1. 导入模块socket
2. 创建socket套接字
3. 绑定IP&端口（必须选）
4. 接受数据
5. 关闭套接字


"""

from socket import *
import utils

# 1. 创建套接字
udp_socket = socket(AF_INET, SOCK_DGRAM)

#通过此配置避免端口号被占用
udp_socket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
# 2. 绑定本地的相关信息，如果一个网络程序不绑定，则系统会随机分配
local_addr = ('', 8888) #  ip地址和端口号，ip一般不用写，表示本机的任何一个ip
udp_socket.bind(local_addr)
print("UDP服务已启动...")

#返回元组
#(b'abc23', ('127.0.0.1', 3333))
#元素1：接收到的数据
#元素2：发送端的地址
# 3. 等待接收对方发送的数据
recv_data = udp_socket.recvfrom(1024) #  1024表示本次接收的最大字节数

# 4. 显示接收到的数据
bytes_arr = recv_data[0]
address = recv_data[1]
msg = utils.decode_data(bytes_arr)
print("收到来自",address,"的数据:",msg)
# 5. 关闭套接字
udp_socket.close()